package top.jfunc.common.db.data;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * SQL 数据行回调
 *
 * @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
 * @since 1.0 2022/11/24 23:55
 */
public interface RowCallbackHandler {

  /**
   * 处理每一行数据
   * <p>
   * 会自动判断该次读取是否有数据 {@link ResultSet#next()}
   *
   * @param rs 数据集
   * @param rowNumber 当前读取的行数
   * @throws SQLException 在使用 ResultSet 的时候可能抛出的异常
   */
  void processRow(ResultSet rs, int rowNumber) throws Exception;

  /**
   * 完成一次完整的读取后回调，比如分页读取一页完成
   *
   * @param rows 一次读取的条数
   */
  default void finishedReading(int rows) throws Exception {

  }

}
